package com.ragdollcat.thirdaicodegenerate.core.saver;

import com.ragdollcat.thirdaicodegenerate.constants.AppConstant;

import java.io.File;

/**
 * 保存代码文件模板类
 * 保存生成的文件到本地
 * 文件路径：tmp/code/bizType_雪花Id/文件名
 */

public abstract class CodeFileSaverTemplate<T> {


    /**
     * 保存文件的标准流程
     *
     * @param codeParseResult 代码解析结果
     * @param appId
     * @return
     */
    public File saveCode(T codeParseResult, Long appId, int version,String description) {
        String path = AppConstant.SAVE_PATH + makeUniqueContents(appId);
        save(path, codeParseResult, version, appId,description);
        return new File(path);
    }



    /**
     * 制作唯一的目录，利用业务编码和appId 加上版本号
     * 这样即使相同的appId，版本号也不一样，不会覆盖，便于版本管理。
     * 子类实现，不同类型解析出的文本，业务类型不一样
     *
     * @return
     */
    public abstract String makeUniqueContents(Long appId);


    /**
     * 保存文件
     * 子类实现，不同类型解析出的文本，需要保存的数量不一样
     */
    public abstract void save(String path, T codeParseResult, int version, Long appId,String description);
}
